Body motion capture in non-controlled environments

ABSTRACT

Prior art systems can achieve full-body motion capture without external cameras; however, these systems are often expensive, limit the user&#39;s movements to a specified area, require the user to wear a specialized full-body suit, have a high device count, may be fully wired and/or require an energy-intensive WiFi connection. The presently disclosed technology is directed to systems and methods for providing full-body motion capture in non-controlled environments where using multiple known camera perspectives is not possible or practical. Specifically, the presently disclosed technology utilizes at set of trackers to be placed on disparate points of a user&#39;s body. A microcontroller for each tracker outputs orientation based on a sensor fusion of outputs. A link consolidates signals from each of the trackers into a singular tracker orientation signal, which is interpolated to determine each tracker&#39;s position.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims benefit of priority to U.S. ProvisionalPatent Application No. 63/322,984 entitled “Full-Body Motion Capture inNon-Controlled Environments” and filed on Mar. 23, 2022, which isspecifically incorporated by reference herein.

BACKGROUND

Full-body motion capture (also referred as motion capture, mo-cap, ormocap) references the process of recording movements of the human bodyand storing those movements digitally. It may be used in medical, film,video gaming, sports, military, and robotics applications, as examples.In medical applications, full-body motion capture may be used to track apatient's movements to diagnose and track treatment of a movementdisorder (e.g., Parkinson's disease). In filmmaking and video gamedevelopment, full-body motion capture is used to record the movements ofa human actor and use that information to animate a digitalrepresentation of the human actor and their movements in 2-D or 3-Dspace. In sports, full-body motion capture is able to provide real-timefeedback on various movements similar to training with a coach.

SUMMARY

Implementations described and claimed herein address the foregoingproblems by providing a body motion capture system comprising: five ormore trackers to be placed on disparate points of a user's body, each ofthe trackers including: an accelerometer; a magnetometer; a gyroscope;and a microcontroller, each of the microcontrollers outputting a signaldefining its tracker orientation based on a sensor fusion of outputsfrom its accelerometer, magnetometer, and gyroscope; and a link toreceive the signals from the microcontrollers and consolidate thesignals into a singular tracker orientation signal; and a computingdevice to receive the tracker orientation signal and interpolate thetracker orientation signal using anatomical constraints to create adigital representation of the user's body movement.

Other implementations are also described and recited herein.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a full-body motion capture system according to thepresently disclosed technology used in a non-controlled environment.

FIG. 2 illustrates an example tracker for a full-body motion capturesystem utilising a 3-sensor inertial measurement unit (IMU) to determinetracker orientation in a non-controlled environment.

FIG. 3 illustrates a user's arm with trackers attached to determine limbposition in a non-controlled environment.

FIG. 4 illustrates example operations for using a full-body motioncapture system according to the presently disclosed technology used in anon-controlled environment.

FIG. 5 illustrates a full-body motion capture system according to thepresently disclosed technology with cascading communications between alink and its connected trackers.

FIG. 6 illustrates a cascading communication system according to thepresently disclosed technology with cascading communications between alinking device and its connected sensing devices.

FIG. 7 illustrates example operations for using a full-body motioncapture system according to the presently disclosed technology withcascading communications between a link and its connected trackers.

FIG. 8A illustrates an example charging hub with an associated trackerand link that each utilize low-power near-beam wireless inductivecharging from the charging hub.

FIG. 8B illustrates an example low-power near-beam wireless inductivecharging circuit.

FIG. 9 illustrates example operations for using a low-power near-beamwireless charging hub.

FIG. 10 illustrates an example system diagram for a computingenvironment suitable for executing a full-body motion capture systemaccording to the presently disclosed technology.

DETAILED DESCRIPTION

In a full-body motion capture session, movements of one or more usersare recorded from multiple camera perspectives within a controlledenvironment and sampled many times per second to calculate positions andmovements of the user(s) in 3D space. Typical modern motion capturesystems often use infrared cameras that track infrared (IR)light-emitting diodes (LEDs) on subjects or objects of interest. While acontrolled environment with multiple camera perspectives may bepractical in filmmaking and video game development environments, suchconditions may not exist for medical applications where a user istracked at their home and other locations. In some cases, the user maybe moving around in a large outdoor area where camera views may be outof range, obscured by weather or terrain, or occluded by other users inthe field of view. Further, even when it is possible to provide acontrolled environment with multiple camera perspectives, it may not befinancially practical.

Other prior art systems may achieve full-body motion capture withoutexternal cameras; however, these systems are often expensive, limit theuser's movements to a specified area, require the user to wear aspecialized full-body suit, have a high device count, may be fully wiredand/or require an energy-intensive WiFi connection. These systems alsooften require a thorough calibration procedure before each use and canlose their calibration when moving to different areas.

The presently disclosed technology is directed to systems and methodsfor providing full-body motion capture in non-controlled environmentswhere using multiple known camera perspectives is not possible orpractical. The solution presented is untethered and enables portablefull-body motion capture in non-controlled environments withoutrequiring the user to manually recalibrate.

FIG. 1 illustrates a full-body motion capture system 100 used in anon-controlled environment. Trackers (T) (e.g., tracker 102) representmeasurement devices worn at disparate points on a user's body 108 tocapture movements of the user's body. The trackers (T) may bestrategically placed and spaced apart on the user's body 108 to capturerelative motions of different portions of the user's body 108 (e.g.,movement of the user's head, torso, arms, legs, relative to one anotherand overall movement of the user's body 108).

The trackers (T) each have a device housing that may be of a variety ofsizes and shapes with a variety of internal components. In someimplementations, the trackers (T) are each generally prismatic in shape,with a rounded top surface, and include at least a set of sensors,collectively and in combination with a computing device referred toherein as an inertial measurement unit (IMU), to determine orientation.For example, each of the trackers (T) may be equipped with an inertialsensor or accelerometer, a magnetometer, and a gyroscope. Outputs fromthe sensors, in combination with anatomical limitations imposed by thelocation of the user's body 108 upon which the trackers (T) are located,permit the system 100 to achieve full-body motion capture without theuse of external cameras. The trackers (T) may also each be approximately26 mm×26 mm×8 mm (+/−5 mm in all dimensions).

The trackers (T) may each be further equipped with a wirelesstransmitter utilising a short-range (low power) wireless communicationprotocol (e.g., Bluetooth, Zigbee, ShockBurst (SB), Enhanced ShockBurst(ESB), or a custom short-range communication protocol, etc.) operatingover a variety of radio bands (e.g., 2.4 GHz ISM band) for communicatingorientation of the trackers (T) to a link (L) 104. The link (L) 104 mayalso be placed on the user's body 108 and includes a wireless receiver.While the link (L) 104 can also be connected to a computer via USB, itdoes not need to be placed on the user's body 108 due to its wirelessfunctionality. In other implementations, the link (L) 104 functionalitycan be combined with one or more of the trackers (T) or computing device106 in a single device worn on the user's body 108. The link (L) 104serves to receive and consolidate orientation data received from thetrackers (T) via communication links (e.g., communication link 110, alsoreferred to herein as a tracker orientation signal). In otherimplementations, the trackers (T) are each individually wired to thelink (L) 104 in addition to or in lieu of wireless communication links.

The link (L) 104 may be equipped with a wireless transmitter utilising ashort-range (low power) wireless communication protocol (e.g.,Bluetooth, Zigbee, etc.) for communicating relative motion of thetrackers (T) to the computing device 106 (e.g., a smartphone,smartwatch, tablet computer, laptop computer, desktop computer, and soon) via communication link 112, which may carry a singular body motioncapture signal. In various implementations, the computing device 106 maybe separate from the user's body 108 but nearby, as shown or worn on theuser's body 108 similar to the link (L) 104 and the trackers (T). Inother implementations, the link (L) 104 is wired to the computing device106 in addition to or in lieu of a wireless communication link 112. Insome implementations, devices other than the trackers (T) (e.g., hapticdevices) may be connected to the link (L) 104 and become part of thesystem 100.

Alternatively, or additionally, the wireless transmitter may utilize amedium-range (medium power) wireless communication protocol (e.g., WIFI)for communicating relative motion of the trackers (T) to the computingdevice 106 that may be located further away (e.g., in the same room orbuilding, but not within the user's reach). Alternatively, oradditionally, the wireless transmitter may utilize a long-range (highpower) wireless communication protocol (e.g., a cellular data networkwith access to the Internet) for communicating relative motion of thetrackers (T) to the computing device 106 or cloud computing storagelocated anywhere within range of the long-range data network (e.g.,geographically anywhere connected to the Internet).

In various implementations, the link (L) 104 includes the capability toreceive signals from the trackers (T) using a first communicationprotocol and send signals to the computing device 106 using a seconddifferent communication protocol. Additionally, the link (L) 104 mayhave the capability to simultaneously stream to two differentcommunication protocols. The link (L) 104 may further be capable ofconsolidating signals received from the trackers (T) into a singularoutbound data stream to the computing device 106.

The trackers (T) and the link (L) 104 are intended to be lightweight,small, and unobtrusive to the user, and low-cost. As the trackers (T)only track orientation (not tracker position) using sensors that may befound in smartphones, the trackers (T) are lower-cost and consume lesspower than similar trackers that would also function to determinetracker position. Further, by utilising a general-use computing device106 that is already owned by the user (e.g., the user's smartphone), thefull-body motion capture system 100 avoids an additional cost of adedicated computing device. While the user is depicted in FIG. 1 aswearing 10 of the trackers (T), in other implementations, the user maywear 5-15 of the trackers (T) to various levels of full-body motioncapture resolution.

FIG. 2 illustrates an example tracker 202 for a full-body motion capturesystem utilizing a 3-sensor inertial measurement unit (IMU) 214 todetermine tracker orientation in a non-controlled environment. Thetracker 202 is equipped with at least three sensors, collectively and incombination with a computing device referred to herein as the inertialmeasurement unit (IMU) 214, to determine relative movement. The IMU 214includes an inertial sensor or accelerometer 216, a magnetometer 218,and a gyroscope 220. Outputs from the accelerometer 216, magnetometer218, and gyroscope 220, in combination with anatomical limitationsimposed by the location of a user's body upon which the tracker 202 islocated, permit the tracker 202 in conjunction with other similartrackers (see e.g., trackers (T) of FIG. 1 ) to achieve full-body motioncapture without the use of external cameras.

Overall orientation of the tracker 202 is defined by its rotation alongthree primary axes, pitch axis 222, roll axis 224, and yaw axis 226.Although roll, pitch, and yaw are discussed for simplicity ofexplanation, 4-dimensional quaternions may be used in actualimplementation to avoid discontinuities. In an example implementation,the accelerometer 216 is primarily used for determining the tracker 202orientation along two of the axes (e.g., along the pitch and roll axes222, 224, but not the yaw axis 226) assuming no movement of the user'sbody. The magnetometer 218 is primarily used to determine orientationalong the yaw axis 226. In combination, the accelerometer 216 and themagnetometer 218 are capable of fully determining the tracker 202absolute orientation in space with respect to a local gravity vector anda local magnetic field vector. The gyroscope 220 is used to measure fastchanges in the tracker 202 orientation, but the gyroscope 220 does nothave a fixed reference and therefore will accumulate error over time.

Specifically, the accelerometer 216 is triaxial and measuresacceleration on the tracker 202 using a 3-dimensional gravity vector asa fixed reference. When the tracker 202 is moving slowly or stationary(i.e., the only measurable acceleration is gravity), the accelerometer216 accurately calculates pitch and roll angles about pitch and rollaxes 222, 224, respectively. As even a human body in motion often andrepeatedly comes to a stop, the IMU 214 is calibrated to identify pointsin time when the tracker 202 is substantially stationary by equatingthat condition with points in time where a magnitude of an accelerationvector output from the accelerometer 216 is within a tunable thresholdat 9.8 m/s², or the assumed value of the magnitude of the gravityvector. At those points in time, the angles about pitch and roll axes222, 224 are updated using the values output from the accelerometer 216assuming the acceleration vector is oriented in the direction ofgravity. These points in time are common in human movement and arepresent at sufficiently regular intervals that gyroscope drift does notaccumulate in roll and pitch. While 9.8 m/s² is a commonly understoodvalue for gravity on Earth, other gravity values may be used in asimilar manner (e.g., in a micro-gravity environment, such as on theMoon). The accelerometer 216 measures force, so the foregoing techniquecan also be used in situations where the “gravity” vector is pointing inan arbitrary direction. Such arbitrary “gravity” vectors are useable solong as the force is constant and non-zero.

The 3-axis magnetometer 218 is primarily used to determine yaw angleabout the yaw axis 226 by measuring magnetic field strength. Under mostconditions, the magnetometer 218 measures the earth's magnetic northpole, which stays relatively constant. The magnetic field vector isaddressed similarly to the foregoing gravity vector except it points ina different direction. The magnetic field vector depends on thegeolocation and in most cases is orthogonal to the gravity vector makingit usable for yaw angle calculations. Exceptions are found in the northand south poles, where the gravity and magnetic field vectors arealigned. In those limited cases, the accelerometer 216 and magnetometer218 will measure the same values. In combination, the accelerometer 216and the magnetometer 218 are capable of fully determining the tracker202 orientation in space using roll, pitch, and yaw angles, however, theresult is only accurate during slow movements (i.e., ignoringacceleration due to movement of the user. The gyroscope 220 is used tomeasure fast movements accurately but there is no fixed reference, whichlimits its usability to the short-term as errors will accumulate. Theaccelerometer 216 and the magnetometer 218 are thus used to correct thegyroscope 220 whenever they are determined to have high accuracy (e.g.,during slow movements, and with a stable magnetic field). Using thegyroscope 220 to make high-rate orientation estimates (e.g., a rate of1000 Hz), the accelerometer 216 and the magnetometer 218 can be run at alower sample rate (e.g., a rate of 10-50 samples/second) to reduceoverall power consumption of the tracker 202.

The gyroscope 220 is triaxial and can be used to estimate yaw angle whenthere are nearby magnetic fields that affect the magnetometer 218. Theaccelerometer 216/magnetometer 218 in combination can be used to correctfor drift in gyroscope 220 angular measurements as the gyroscope 220operates with no fixed reference and errors accumulate over time. Asnearby magnetic fields, of both hard and soft varieties, change overtime, the tracker 202 likewise compensates for these magnetic fieldsover time.

In an example implementation, the magnetometer 218 data can be modeledas follows:

-   -   mag′=Soft*(mag−Hard);    -   mag′is 1×3 corrected magnetometer data;    -   mag is 1×3 raw magnetometer data from the magnetometer 218;    -   Soft is a 3×3 matrix containing rotation, skew, and scale; and    -   Hard is a 1×3 matrix containing positional offset.

Although soft-iron and hard-iron interference are often used to describethese correction terms, they are technically incorrect. Soft-iron refersto materials that can easily become magnetized and demagnetized.Although this does occur on the printed circuit board level, thesoft-iron matrix mostly corrects magnetic distorting materials that arewithin millimeters of the magnetometer 218, whether hard or soft.Similarly, a hard-iron offset vector can also include soft-irondistortions. Corrected magnetometer data may be defined by:

mag′=Near*(mag−Far).

An ideal magnetic field reading produces a sphere when the magnetometer218 is rotated in all possible orientations, however, near and farmagnetic distortions will alter the sphere in different ways. Forexample, if the field is far, the magnetometer 218 sees an offset inmagnetometer reading because the field distortion is weak relative tothe Earth's magnetic field. The magnetic field is far enough that thedistortion will be felt evenly across the magnetometer 218 sensor axes.This offset is caused by a weakening or strengthening of the totalmagnetic field as the Earth's magnetic field lines curve around aferrous material before being read by the magnetometer 218. This iscommonly caused by steel beams in buildings but can also be observed bynearby permanent magnets. Instead of the magnetic field being centeredabout the origin (0,0,0), the magnetic field will be centered around thecombined effect of the magnetic field distortions. Depending on theinteractions, this can either increase or decrease the overall magneticfield magnitude in a localized area. These localizations occur graduallyover meters suggesting application of a continuous calibrationalgorithm.

If the magnetic field distortion is nearby (e.g., within millimeters),the magnetic field line will curve around the material causing themagnetometer 218 to lose or gain sensitivity along the direction of themagnetic field lines resulting in bulges to the ideal sphere. Themagnetic field is near enough that the distortion will be felt unevenlyacross the magnetometer 218 sensor axes. The resulting shape is commonlyreferred to as an ellipsoid, however, this is technically incorrect.When the distortion is near the magnetometer 218, the magnetic fieldlines form a shape that applies uneven distortion to all axes. Forexample, if a near-field distortion is along the x-axis, it will apply astrong distortion to the +x axis and a slightly lower distortion to the−x axis. The result resembles an ellipsoid, but an ellipsoid issymmetrical, which may not accurately reflect reality. A 3×3 near matrixmay better reflect reality as it assumes no symmetry. Once thenear-field correction matrix is obtained, it may not need to berecalculated again.

Near-field magnetic interference typically originates from nearby softmagnetic objects (e.g., capacitors on an associated printed circuitboard (PCB), associated traces and vias, batteries, coils, etc.) and isassumed to be relatively constant in low-power systems. Rotation of thetracker 202 about all of axes 222, 224, 226 is expected to yield asphere of data with a fixed center. Near-field magnetic interferencedistorts the sphere of data to be ellipsoidal. Some prior art solutionsfit the ellipsoidal data to a sphere fitting equation, which isgenerally insufficient to yield the desired accuracy at all angularorientations of the tracker 202 because the near-field distortion is notsymmetric, as discussed above. In the presently disclosed technology,the dot product between the normalized gravitational direction asdetermined by the accelerometer 216 and normalized magnetic north asdetermined by the magnetometer 218 is assumed as constant and is knownas the local magnetic inclination or dip angle. A sphere fittingequation using these additional constraints is then fit to the ellipsoidof yaw data to yield an improved near-field magnetic interferencecorrection. An example near-field magnetic interference correctionequation follows.

Solving for the near-field matrix involves calculating 12 variables inthe following minimization problem:

Minimize: ax′*mx′+ay′*my′+az′*mz′−sin(dip);

-   -   ax′, ay′, az′ are the normalized acceleration values when        acceleration is within a threshold from gravity;    -   mx′, my′, mz′ are the normalized magnetometer values after        applying the near and far corrections;    -   dip is the local dip angle;    -   x=N11*(mx−F0)+N12*(my−F1)+N13*(mz−F2);    -   y=N21*(mx−F0)+N22*(my−F1)+N23*(mz−F2);    -   z=N31*(mx−F0)+N32*(my−F1)+N33*(mz−F2);    -   norm=SQRT(x{circumflex over ( )}2+y{circumflex over        ( )}2+z{circumflex over ( )}2);    -   mx′=x/norm;    -   my′=y/norm;    -   mz′=z/norm;    -   N11 is the first row, column of the 3×3 Near-Field Correction        Matrix;    -   F0 is the first element of the Far-Field Correction Vector; and    -   mx is the x-component of the raw magnetometer value from the        sensor reading.

The foregoing is a multidimensional nonlinear equation with 12 unknownssolving for both the 3×3 Near-Field Correction Matrix (N) and the 1×3Far-Field Correction Vector (F). The sensor data is noisy; therefore, anexact solution may not always exist when given only 12 data points. Toreach a reasonable amount of accuracy, a linear least squares approachon a couple hundred properly spaced data points may be used to solve theoverdetermined system. In this case, the selection of the points isimportant. They are representative of all possible rotations and arerecorded in a magnetically stable environment. The Gauss-Newtonalgorithm can be used in this case as the Jacobian can be calculatedanalytically. Even though the Gauss-Newton results in multiple solutionsdepending on the starting point, the minima are all concentrated veryclose to the global minimum, therefore any solution may be acceptableand provide excellent accuracy. This algorithm is computationallyintensive but only needs to be done once at the factory. The near-fieldcorrection matrix will always be valid in normal use even when changinglocations.

What does change and is thus updated constantly is the 1×3 Far-Fieldcorrection vector. This vector can easily change depending on theenvironment but also depending on the sensor itself. Magnetometer 218readings can change due to internal magnetization. To account for this,magnetometers with internal degaussing can be used to clear residualmagnetization. The calibration itself is similar to the near-fieldcorrection minimization problem, except that the 3×3 near-fieldcorrection matrix is reused. As such, there are only 3 unknowns to solvefor (F0, F1, F2). This algorithm operates in real-time, therefore theGauss-Newton algorithm is no longer the fastest option as it only usesthe Jacobian (first derivative) to update the estimate every iteration.A linear least squares algorithm that uses the Hessian (secondderivative) may yield faster convergence in fewer iterations. Suitablealgorithms include the Gradient Descent Algorithm and theLevenberg-Marquardt Algorithm, for example. The only requirement for theinput data is to collect a suitable spread. Testing shows that 30samples covering a 20-degree arc are suitable to achieve a 1% centeroffset error. Similar to before, the algorithms will return local minimadepending on the starting point, but the solutions may all beconcentrated near the real minimum making any solution acceptable.

These equations work because of an assumed physical property that theangle between the normalized magnetic field and the normalizedacceleration is always equal to the local dip angle. However, thisproperty is only true when the magnetic field is properly calibrated.Whenever there is an arbitrary acceleration vector, the magnetic fieldvector is separated by the local dip angle. When placed on a unitsphere, the possible magnetic field values form a circle with each pointof the circle representing a different yaw angle. In sum, given anacceleration, yaw angle is indeterminate. However, when more points arecollected, the possible true value of the magnetic field is narrowedbecause the magnetic field itself contains the true yaw angle.Essentially, the linear least squares algorithm finds the values thatminimize the dot product thus finding the center of the sphere thatresults in the most accurate magnetometer 218 reading. Once the centerof the sphere is found (the far field correction vector), the data canbe centered and normalized. The acceleration can be used to rotate themagnetic field such that the x and y components form the tangent of theyaw angle, and the z-component equals the sin of the dip angle. The yawangle obtained from the magnetic field can then be used to correct thegyroscope yaw angle.

Far field magnetic interference originates from nearby hard magneticobjects (e.g., speaker magnets) and can change rapidly as proximity tothe source changes. Far-field magnetic interference shifts the centerpoint for the sphere of data collected by rotation of the tracker 202,which is directly accounted for by checking the dot product between thenormalized acceleration vector and the normalized magnetic field vectorafter applying near-field and far-field corrections. If the dot productmatches the local dip angle within a threshold, then the yaw angle fromthe magnetic field can be trusted. If the dot product differs for morethan a handful of samples, the far-field correction vector isrecalculated by collecting more samples. Measurements in changes ofangular yaw as measured by the gyroscope 220 are assumed to be accuratein the short term, but errors accumulate over time that make thegyroscope 220 progressively less accurate over time as it lacks a fixedpoint of reference. In contrast, yaw angle measurements output from themagnetometer 218 are potentially compromised by far-field magneticinterference, and thus may not be trusted when the dot product is notclose to the dip angle. However, as the magnetometer 218 has a fixedmagnetic-north point of reference, any changes in short-term far-fieldmagnetic interference can be calibrated for and used to correct thegyroscope error in the yaw axis when the data becomes reliable again asthe magnetic north reference does not change.

The far-field magnetic interference is thus compensated for by firstcomparing the dot product between the normalized magnetometer aftercorrections and the normalized accelerometer to the local dip angle, andthen calculating the resulting yaw angle when the magnetic sphere centeris found. Since this calibration only needs a fraction of the sphere and30 samples, it can be run continuously. Whenever the dot product doesnot match the local dip angle, the gyroscope 220 is instead used toupdate the orientation while calibration data is being collected. After30 samples, the tracker 202 will run the far-field calibration algorithmand check the resultant dot product. When the dot product matches thedip angle, the magnetometer 218 can again be trusted, thus the yaw angleis corrected to the magnetometer 218 reading. In some implementations, asmoothing algorithm is used to prevent a noticeable snap to an updatedmagnetometer 218 reading when moving from a series of gyroscope 220readings.

In sum, the accelerometer 216 measurements of gravity (pitch and rollangles) can be assumed accurate when the magnitude of the accelerometer216 output equals a commonly understood value for gravity within athreshold. The magnetometer 218 measurement of magnetic north (yawangle) can be assumed accurate when the dot product between thenormalized acceleration and the normalized magnetic field aftercorrections equals the local dip angle within a threshold. If the dotproduct differs from the local dip angle, the gyroscope 220 incrementalmeasurements of change in yaw angle can be assumed to be accurate in theshort term until confidence in the magnetometer 218 measurement of yawangle can be re-established.

The tracker 202 orientation combined with known tracker 202 relativepositioning on the user's body and known anatomical constraints of theuser's body enables continuous motion tracking in non-controlledenvironments, as further discussed below.

FIG. 3 illustrates a user's arm 300 with trackers 302, 328, 332 attachedto determine limb position in a non-controlled environment. While an armis explicitly illustrated and described below, similar processes may beapplied to a user's leg or other subset of or entire user's body tocalculate position using tracker orientation data combined with knownanatomical constraints of the user's body. The arm 300 may be analyzedas a kinematic chain including a set of links (i.e., upper arm 305,lower arm 310, and hand 315) and joints (i.e., elbow 320 and wrist 325).The links 305, 310, 315 are assumed as straight and rigid members, eachextending along axes 330, 335, 342, respectively. The joint 320 isassumed as a hinge joint (one degree of freedom), while the joint 325 isassumed as a ball-and-socket joint (two rotational degrees of freedom).While the foregoing assumptions on possible motion of the upper arm 305,lower arm 310, and hand 315 links and the elbow 320 and wrist 325 jointsare not absolute, for the purposes of calculating position using trackerorientation data, these are reasonably known anatomical constraints thatcan apply to all human bodies.

While the user's limbs can be calculated substantially the same way asdescribed above with reference to the user's arm 300. The user's torsomay be treated somewhat differently. In some implementations, the user'storso includes a singular tracker and is approximated by a rigid link.In further implementations, the user's torso includes two trackers, oneon the user's upper torso and one on the user's lower torso. Using twotrackers, movement of the user's torso can be approximated by two linksconnected by the ball-and-socket joint. Further additional trackers maybe used on the user's torso (or interpolating the two torso trackers toestimate additional spine joints) may be used to more accuratelyrepresent an actual kinematic chain of the user's spine, depending onthe accuracy required in rendering the movement of the user's torso. Inimplementations that do not reference an external absolute positioningdevice (e.g., a VR headset), one of the torso trackers may be used as aknown position for basing position calculations of the other trackerstherefrom.

The known anatomical constraints of the user's body are predefined and,in some implementations, include height, weight, and/or body type, andlimb lengths/range of motion limitations of the user's limbs, forexample. In other implementations, the known anatomical constraints areassumed as common to all users and not specific to any particular user'sbody. If the user wishes to animate a similar avatar, lengths of theuser's limbs can be used to more accurately reflect their owndimensions, or they can animate an entirely different body model astheir avatar. The user's height, weight, and/or body type may be used toshow the user an avatar more similar to themself, however, this is notnecessary for the functionality of the full-body motion capture systemsdisclosed herein because orientation of the limbs do not change whenlimbs lengths are resized. Assumed anatomical constraints may be basedon generally known anatomical models of the human body, including limitsof human joint rotations, and are used to calculate tracker positionusing measured tracker orientation. Use of the term “body” hereinwithout “human” refers to any human or non-human (e.g., animal) body,and even bodies that may not have a basis in the real world (e.g., agiant, alien, and hydra).

Similar anatomical models may be made for other non-humanoid animals,such as canines or felines. In such cases, a humanoid user's movementsmay be mapped to a non-humanoid avatar. Further, a non-humanoid user,such as a dog, may be mapped to a humanoid or non-humanoid avatar. Stillfurther, the presently disclosed technology may be applied to anyinanimate object that can be approximated by a kinematic chain, or acombination of such an inanimate object with a humanoid kinematic chain(e.g., a user holding sporting equipment, such as a fishing rod, thatcan be approximated using a kinematic chain).

The trackers 302, 328, 332 are each attached to the user's upper arm305, lower arm 310, and hand 315, respectively. The trackers 302, 328,332 each include bands 340, 345, 350, respectively, each of which servesto attach the trackers 302, 328, 332 to the arm 300. The bands 340, 345,350 further serve to orient roll axes 355, 360, 365 of the trackers 302,328, 332, to run substantially parallel to the user's upper arm 305,lower arm 310, and hand 315, respectively, as illustrated. The bands340, 345, 350 prevent the trackers 302, 328, 332 from being mounted tothe links 305, 310, 315 in a non-aligned fashion, thus allowing thealignment to become part of the constraints for calculating trackerposition using tracker orientation data and the assumed anatomicalconstraints.

In some implementations, each of the trackers 302, 328, 332 mayoptionally be mounted in reverse positions from that shown. However,this still yields roll axes 355, 360, 365 of the trackers 302, 328, 332,running substantially parallel to the user's upper arm 305, lower arm310, and hand 315, respectively. Only the direction of the trackers 302,328, 332 is reversed, which can be compensated for by resetting the zeropoint of the trackers 302, 328, 332 using a calibration process, asdiscussed in further detail below. In other implementations, the yaw orpitch axis of each of the trackers 302, 328, 332 runs substantiallyparallel to the user's upper arm 305, lower arm 310, and hand 315,respectively, instead of the roll axis. This assumption can be used as aknown constraint for calculating tracker position using trackerorientation data and the assumed anatomical constraints.

As noted above, assumed anatomical constraints for the human body basedon known body mechanics and limits of its movement are combined withtracker orientation data to generate tracker position over time. Thisdata can be used to animate a digital avatar using the user's bodymovements in an uncontrolled environment (e.g., without cameras or otherexternal tracker positioning information). In a calibration sequencethat may include a limb identification sequence, trackers arepre-identified for use in specific positions on the user's body, whichmay include both the tracker orientation on the strap as well as thestrap orientation on the body to properly align the axes. Once the limbidentification sequence is complete, the calibration sequence continueswith the user assuming a fixed starting position (e.g., a T-pose or anI-pose), where each of the trackers is reset based on the known fixedstarting position. Calibration may be repeated periodically to addressany drift issues by returning to the fixed starting position for a briefperiod of time (e.g., 1-3 seconds), with or without positivelyindicating that the user is re-calibrating.

The trackers 302, 328, 332 and an associated link (not shown, see e.g.,link 104 of FIG. 1 ) may not be alone capable of determining absoluteposition within a physical space, such as a room. In variousimplementations, this is not an issue because the user's absoluteposition within the physical space is not relevant for animating theuser's avatar. The user's avatar moves within a virtual space anyway andthe user's real physical space is not needed. In other implementations,the absolute position within the physical space is important. In thesecases, an external absolute positioning device (e.g., a VR headset) maybe used to provide a reference point within the user's physical space todetermine absolute position of the trackers 302, 328, 332 within theuser's physical space.

The tracker positions are inferred using reverse-forward kinematics orRFK, which is based on forward kinematics (FK). Specifically, RFK startswith an endpoint position and orientation of a kinematic chain and worksbackward to calculate tracker positions down the kinematic chain usingknown joint orientations and link lengths. As compared to FK, which usesa starting position and rotation and link lengths to solve for trackerposition forward down a kinematic chain, RFK starts with an endpointposition and rotation, and solves backward down the kinematic chain fortracker position.

Mathematically, FK propagates a system's internal known position forwardin the kinematic chain and then aligns it to a target coordinate systemat the end, as follows:

-   -   EL_P=SH_P+H(EL_Q, SH2EL);    -   HA_P=EL_P+H(HA_Q, EL2HA);    -   (T_P−HA_P)=offset;    -   HA_P+=offset; and    -   EL_P+=offset.

In contrast, RFK propagates the target coordinate system's knownposition backward in the kinematic chain in one iteration, as follows:

-   -   HA_P=T_P;    -   EL_P=HA_P−H(HA_Q, HA2EL); and    -   SH_P=EL_P−H(EL_Q, EL2SH).

The offset is not needed because the calculations all occur within thetarget's coordinate system by propagating the position backward.Referencing the foregoing;

-   -   T_P is the target coordinate system's known position shared with        the hand;    -   SH_P, EL_P, and HA_P are the shoulder, elbow, and hand        positions;    -   EL_Q and HA_Q are the elbow and hand quaternion;    -   H( ) is the Hamilton product that rotates the link length by the        quaternion; and    -   SH2EL is the fixed shoulder to elbow length. Other lengths        follow the same convention.

RFK calculates the unknown positions and aligns them to a knowncoordinate system in one iteration. When FK is used, one iteration isused for calculating the positions in an internal coordinate system andthen another iteration is used for aligning the internal coordinatesystem to a known coordinate system by calculating the positiondifference between the two systems at the common joint. RFK can beespecially useful in VR applications where a headset provides aposition. The body tracking system can align to the VR coordinate systemin one iteration by propagating the known position back into thekinematic chain.

Most body tracking systems use inverse kinematics (IK), which uses asingle end-effector position and orientation to estimate missing jointpositions and orientations along a kinematic chain. For example, a VRcontroller contains IR LEDs that are continuously read by a VR headset.The headset uses the magnitude and visible pattern of the constellationof LEDs to determine the location and orientation of the controller. Ifthe controller is held in the user's hand, IK can be used to estimatethe elbow position and orientation without having to have a separatetracker on the elbow. However, the accuracy of this estimate varieswildly and may not be suitable for applications that demandhigh-resolution data. Additionally, IK is traditionally used byanimators because it is easier for an animator to control a hand andsimply let the program figure out where the elbow should go. Higheraccuracy is achieved with RFK as it produces one solution for a givenset of inputs whereas IK produces several solutions. RFK is alsocomputationally efficient and can be calculated every sample with only asingle iteration whereas IK requires multiple samples and multipleiterations to converge on a solution when an analytic solution does notexist, as is the case for the human body.

In various implementations, hard limits in the anatomical constraintscan be used to correct sensor errors or drift. For example, a hingejoint prevents motion outside of a singular plane. Trackers on eitherside of a hinge joint may be prevented from outputting position changesthat are outside of that singular plane. Further, sensor readingsoutside of a hard limit may be averaged or adjusted gradually over timeto reduce the likelihood of a noticeable correction. In someimplementations, such corrections may indicate a need to re-calibratethe motion tracking system, per the procedure described above. In someimplementations, the user may be notified of the need to recalibratewith an indicator (e.g., haptic feedback from the link). Further, insome implementations, customized hard limits are available for the userto set if they expect their avatar or a related tracked object to belimited in a specific manner (e.g., a tennis racket could have a hardlimit that it remains attached to a specific user's hand).

FIG. 4 illustrates example operations 400 for using a full-body motioncapture system according to the presently disclosed technology used in anon-controlled environment. In an applying operation 405, a user applies5-15 trackers in a spaced arrangement across the user's body. Thetrackers each include an inertial sensor or accelerometer, amagnetometer, and a gyroscope, to determine tracker orientation.Further, each of the trackers is placed in predetermined locations onthe user's body (e.g., the user's head, torso, and limbs). Althoughthere are more areas on the user's body where the trackers can beplaced, there are diminishing returns going beyond 15 total trackers.Example placement locations (counts) are head (1), chest (1), waist (1),upper arm (2), lower arm (2), hand (2), upper leg (2), lower leg (2),foot (2). Fingers and toes are also part of human body kinematic chains,but they can be considered special cases because their links and jointsare not fully independent of each other, like other parts of the body,and thus require fewer trackers to fully capture their movements.

A calibration operation 410 calibrates the trackers against a fixedreference that includes one of the trackers. In an exampleimplementation, the fixed reference is the user's head, which includesone of the trackers. The user stands in a predetermined position, andthe trackers are calibrated against the fixed reference using knownanatomical constraints of the user's body (e.g., the user's height andweight), as well as constraints in motion of the individual locations ofthe trackers (e.g., elbow and knees are limited to rotation about asingle axis, while hip and shoulders are capable of rotation in alldirections). In other implementations, no fixed reference is requiredfor the calibration operation 410.

The calibration operation 410 may further define the exact location onthe user's body where each of the trackers is applied. For example,while the user is instructed to apply one of the trackers to their leftupper arm, the calibration operation 410 determines and stores the exactlocation of the tracker on the user's left upper arm (e.g., anterior,posterior, medial, or lateral). The calibration operation 410 defines astarting position and orientation of each of the trackers with referenceto the fixed reference (e.g., a tracker applied to the user's head).

A tracking operation 415 tracks accelerometer, magnetometer, andgyroscope measurements of each of the trackers as the user moves from afirst body position to a second body position, and so on. A sensorfusion operation 420 combines data from the accelerometer, magnetometer,and gyroscope associated with each tracker, to generate signalsrepresenting orientation for each tracker as the user changes their bodyposition over time.

Sensor fusion is the process of taking data from separate sources andgenerating a combined output. In the case of IMU data, the inputs areaccelerometer, gyroscope, and magnetometer data while the output isorientation data. Some filters conventionally used for IMU data includethe Mahony, Kalman, and Madgwick algorithms. These algorithms all sufferfrom the same problem of not having a trusted reference for correction.They use the gravity vector and the magnetic field vector, but theyassume the data is accurate under all conditions. If the input data isinaccurate, the filter takes that data and produces inaccurate results.In addition, these are general algorithms, not necessarily developed forthe purposes of IMU sensor fusion. The disclosed method uses anopportunistic approach that relies on using data from sensors only whenthey are deemed accurate. In an example implementation, the gyroscopecontinuously collects data at over 400 Hz, which is sufficient tocapture most human movement. The gyroscope data updates a quaternion byrotating it in the appropriate axes. The quaternion is converted toroll, pitch, and yaw angles in the XYZ Euler Angle Sequence forpotential correction. The accelerometer data is sampled at 10 Hz and itsmagnitude is calculated. If the magnitude is close to gravity, then thedata is assumed accurate.

Roll and Pitch are calculated from the accelerometer and comparedagainst the quaternion-derived Roll and Pitch. A complementary filter isthen used to combine the two measurements with more weight being placedon the quaternion-derived values to allow for smooth motions. Then thenew roll, new pitch, and old yaw are combined to form the correctedquaternion. Correcting the yaw angle requires a combination of theconcepts discussed. First, the trackers must know where on the body theyare and their placement (e.g., trackers can be placed in two ways on thestraps), which may be preconfigured.

After the trackers are defined to respective locations, the user standsin a calibration pose. The most natural appears to be the I-pose wherethe body is standing straight, feet are together facing forward, and thearms are extending straight down. The tracker detects that no motion hasoccurred for a predetermined time with the correct quaternion-derivedacceleration values and determines that the user wants to calibrate.This can be done at any time. Since the trackers know where they are onthe body, they know what quaternion they should reset to. An additionaladvantage is that if the pose is held by accident, the trackers'recalibration only improves the user experience.

In an alternative solution (that assumes a constant magnetic field)immediately after the quaternion reset, the tracker starts recordingmagnetometer data in a look-up-table (LUT) alongside yaw angles (thatare assumed accurate short-term). The first thing to check is whetherthe magnetometer data can be trusted. In prior art approaches, thisinvolves rotating the tracker in all possible orientations to find theellipsoid of best fit but that is impractical for this application.Alternatively, an effective check is to compare magnetometer data toaccelerometer data. Magnetometer data and accelerometer data bothmeasure a fixed reference, they are simply different references, so thedata is similar except rotated. The dot product of the two vectors givesthe similarity between them. If they are similar, it means that themagnetometer data is accurate and is assumed accurate. New magnetometerdata is only stored when the tracker has rotated a sufficient amount. Ifthe magnetometer data is within a reasonable range of a value previouslystored in the LUT, it will use that yaw angle and the quaternion derivedyaw angle in a complementary filter to correct itself. In this way, theyaw angle will be accurate within a few degrees because the error is notallowed to grow. The magnetic field in a room is steady, so once a usercalibrates in a room it will most likely be valid for all time. If auser changes rooms, the magnetic field is shifted slightly (e.g., due todifferent hard-iron offsets). Using the LUT and thequaternion-derived-yaw angle, the LUT can be offset so that the user maynot need to recalibrate when changing rooms.

A consolidating operation 425 consolidates signals output from thetrackers at a singular link. The link may also be attached to the user'sbody, or placed nearby, and serves to consolidate the signals outputfrom the individual trackers. In various prior art systems, havingmultiple wireless trackers means having multiple links (also referred toas receivers), which increases link size because each antenna needs tobe sufficiently spaced apart from the other antennas. Each link andtracker pair can operate at different frequencies to reduceinterference, but interference will still be present if multiple linkand tracker pairs are operating at the same time. The presentlydisclosed technology utilizes a singular link (or receiver) for all (ora subset) of the trackers. An additional benefit is the reduced load ona computation device since it only needs to manage data from one link asopposed to multiple links. Additionally, a single combined packet workswell with standardized communication protocols such as Bluetooth or Wifithat are designed for larger packets and fewer concurrent connections.

In one implementation, the link utilizes cascading communications withthe trackers to collect and distinguish the orientation data sent by thetrackers to the link, as disclosed in further detail below withreference to FIGS. 5-7 . In other implementations, the link scanspredetermined wireless frequencies for a period of time sufficient tocapture a signal. A tracker synchronizes its timer with the link so thatit knows when to send its next packet of orientation data. The linkswitches to another frequency, waits for a signal, and synchronizes withanother tracker. This is done until the expected number of trackers isreached and then repeats. With the clocks synchronized, the trackers areable to sleep when not sending data and the link is able to sleep whenit does not expect to receive data, which keeps the battery requirementslow, further aiding in a reduced tracker/link size. Further, the linkacts as a data buffer and combines the data from the trackers into asingle packet before sending it further down the data processing chainto another computing device. This keeps latency to a minimum as theprocessing required for real-time analysis is the sample rate of thedata instead of a much faster on-demand sample rate.

An interpolation operation 430 interpolates the data received by thelink to generate a digital representation of the user's body movement.More specifically, the interpolation operation 430 utilizes the trackerlocations on the user's body and constraints specific to the user's body(or a generic human body), to generate a signal that digitallyrepresents the relative location and movement of each tracker over time.The interpolation operation 430 is performed using each tracker on theuser's body to fully map movement of the user's body to a digitalavatar. In various implementations, the link is connected to a computingdevice that executes the interpolation operation 430. The digitalrepresentation of the user's body movement may then be stored within thecomputing device or sent on to other computing device(s) over acomputing network.

FIG. 5 illustrates a full-body motion capture system 500 according tothe presently disclosed technology with cascading communications betweena link 504 and its connected trackers 502, 528, 530, 532, 534, 536. Thetrackers 502, 528, 530, 532, 534, 536 represent measurement devices wornon a user's body to capture movements of the user's body. The trackers502, 528, 530, 532, 534, 536 may be strategically placed and spacedapart on the user's body to capture relative motions of differentportions of the user's body.

The trackers 502, 528, 530, 532, 534, 536 are each equipped with avariety of sensors, collectively and in combination with a computingdevice referred to herein as an inertial measurement unit (IMU), todetermine orientation. For example, each of the trackers 502, 528, 530,532, 534, 536 may be equipped with an inertial sensor or accelerometer,a magnetometer, and a gyroscope. Outputs from the sensors, incombination with anatomical limitations imposed by the location of theuser's body upon which the trackers 502, 528, 530, 532, 534, 536 arelocated, permit the system 500 to achieve full-body motion capturewithout the use of external cameras.

The trackers 502, 528, 530, 532, 534, 536 are each further equipped witha communication link with receive and transmit capability utilising acustom short-range communication protocol operating over a specificfrequency (e.g., the 2.4 GHz ISM band) for communicating orientation ofthe trackers 502, 528, 530, 532, 534, 536 to the link 504. The link 504is also placed on the user's body and also includes a communication linkwith receive and transmit capability. The link 504 serves to receive andconsolidate the orientation data received from the trackers 502, 528,530, 532, 534, 536 via the communication links.

Prior art body-worn trackers often operate with a 1:1 relationship withan associated link in an effort to maximize signal integrity andthroughput. Such a system minimizes the risk that positional data fromeach of the trackers is confused with positional data from othertrackers. However, such prior art systems substantially increase thenumber of links required from one, as provided in the presentlydisclosed technology, to a number equal to the number of trackers. Thisis disadvantageous due to cost and an increase in overall systemcomplexity. Furthermore, these systems can still suffer from signalintegrity issues because on-air collisions may be unavoidable when nosynchronization scheme is employed.

Other prior art systems attempt to connect multiple trackers to asingular link via a common communication standard, such as Bluetooth.However, connecting multiple devices over a common communicationstandard such as Bluetooth tends to cause delays in packet receipt,including queued or dropped packets that must be re-requested from thetrackers. Further, such prior art systems focus on sending positionaldata from the trackers to the links rather than orientation data, asprovided herein. These positional data packets tend to be larger thanorientation data packets, and thus more susceptible to packet loss dueto wireless network bandwidth limitations.

A further problem with prior art body-worn sensors using wirelesscommunication with one or more nearby links is that the human body tendsto block most signals in the 2.4 GHz band. One solution is to use morepower, but this comes at the price of a larger device. Instead, one cankeep the range of the wireless connection short and increase the size ofonly one device, in this case the body-worn link 504. The link 504 canbe worn on the user's body to minimize distance to the trackers 502,528, 530, 532, 534, 536 and maximize connection quality.

To further improve connection quality, the trackers 502, 528, 530, 532,534, 536 can space their signals to be received by the link 504 in time,space, or frequency. For example, the trackers 502, 528, 530, 532, 534,536 may operate at frequencies spaced across the 2.4 GHz band, or acrossmultiple frequency bands, to reduce on-air interference. For furtherexample, the trackers 502, 528, 530, 532, 534, 536 may operate withpredetermined time slots (e.g., an assigned point in time or timingwindow), each unique to one of the trackers 502, 528, 530, 532, 534,536. More specifically, orientation data packets 538, 540, 542, 544,546, 548 outbound from each of the trackers 502, 528, 530, 532, 534,536, respectively, are cascaded in timing so that the link 504 receivesthe data packets in sequence. The link 504 is able to identify thesource of each of the data packets based on when the data packet isreceived.

The link 504 is further capable of providing feedback to the trackers502, 528, 530, 532, 534, 536 in the form of confirmation packets (notshown, see e.g., Acknowledgement or confirmation packets A-D of FIG. 6 )sent in response to receipt of each of the data packets 538, 540, 542,544, 546, 548. The confirmation packets acknowledge receipt of each ofthe data packets 538, 540, 542, 544, 546, 548 and provide instruction tomodify timing of the next data packet outbound from each of the trackers502, 528, 530, 532, 534, 536 to more closely match the predeterminedtime slot assigned to the tracker. In this manner, the link 504 providesa continuous timing feedback loop that ensures the trackers 502, 528,530, 532, 534, 536 continue to send orientation data packets at theirassigned predetermined time slots.

Additionally, the data needed to transmit device orientation can beminimized to only a few bytes (e.g., less than 16 bytes or 8 bytes),which can be transmitted in under 1 ms, or even under 300 μs. While notin active use, the trackers 502, 528, 530, 532, 534, 536 can enter alow-power (sleep) mode while the IMU of each of the trackers 502, 528,530, 532, 534, 536 fills up its data buffer. As discussed above, thetrackers 502, 528, 530, 532, 534, 536 are synchronized with the link 504such that two of the trackers 502, 528, 530, 532, 534, 536 are notsending orientation data packets at the same time to reduce interferenceand enable the trackers 502, 528, 530, 532, 534, 536 to sleep betweensends for improved battery life. Use of a low power wireless connectionand/or wire connection minimizes the power requirements of the trackers502, 528, 530, 532, 534, 536, which allows them to be used tocontinuously monitor the user's body while the full-body motion capturesystem 500 is in use and still maintain long battery life. In a purelywired implementation, the trackers 502, 528, 530, 532, 534, 536 may omitdedicated battery power and draw power from a central battery located inthe link 504.

While six trackers 502, 528, 530, 532, 534, 536 connected to one link504 is illustrated in FIG. 5 , other implementations may incorporate anynumber of trackers (e.g., 1 to 32) connected to a singular link, withthe only limiting factor being the bandwidth available to separate theinbound data packets from each of the trackers in time. To elaborate, ifit takes a tracker 1 ms to send a packet and receive a confirmationpacket, then the radio time is 1 ms. In cascading communications, radiotime cannot be occupied by more than one connection at the same time.Therefore, if the system 500 is running at 100 Hz (10 ms), the system500 only supports 10 trackers. If the frequency is reduced to 30 Hz (33ms), the system 500 increases support to 33 trackers. Radio time can bereduced by increasing the bitrate but at the cost of range and signalintegrity. In some implementations, signal frequency is used to furtherseparate groupings of trackers. For example, if more trackers thanavailable bandwidth are used with a singular link, a first grouping ofthe trackers may utilize a first frequency band and a second grouping ofthe trackers may utilize a second frequency band, thereby doubling themaximum possible trackers that may be connected to a link. For furtherexample, two separate full-body motion capture systems may be used inclose proximity (e.g., within the same room or building) by operating afirst link and its associated trackers over a first frequency band and asecond link and its associated trackers over a second frequency band.Still further, more than two frequency bands may be utilized to stillfurther expand the number of links and associated trackers that may beused in close physical proximity to one another.

In another implementation, one or more of the trackers 502, 528, 530,532, 534, 536 may be replaced with a combined tracker (e.g., a glove)that includes multiple individual trackers. The orientation data of themultiple individual trackers is consolidated at the combined tracker,and the packets outbound from the combined tracker contain orientationdata for each of the multiple individual trackers therein. In someimplementations, this may yield incrementally larger orientation datapackets. The system 500 can evenly space out and allocate theappropriate amount of time to accommodate various packet sizes by usinga ratio of the total bandwidth. This works as long as the packet sizesare fixed and do not change over time. For example, if the combinedtracking device uses 20% of the available bandwidth, then it will begiven a larger timeslot that reflects that by shifting the othertrackers that each only consumes 10% of the available bandwidth.

In various implementations, the outbound orientation data packets fromthe trackers 502, 528, 530, 532, 534, 536 are encrypted and/orauthenticated. Encryption and/or authentication enhances user privacyand security while preventing or reducing non-authorized trackers fromreplacing the trackers 502, 528, 530, 532, 534, 536 or non-authorizedlinks from replacing the link 504. The encryption process includessynchronized pseudo-random number generators present on both thetrackers 502, 528, 530, 532, 534, 536 and the link 504. Each outboundorientation data packet iteration is generated with a new key based onthe latest pseudo-random generated number, which will be known by boththe tracker (for encryption) and the link (for decryption). Further,each pairing of tracker/link has its own pseudo-random number pairing,so that if any one of the trackers is hacked, only the one tracker isaccessed. Authentication may be accomplished by both the tracker and thelink generating a hash of each orientation data packet. If the hashesmatch, the orientation data packet is authenticated. The bit fieldswithin each orientation data packet may also be scrambled to furtherenhance encryption and/or authentication of the orientation datapackets.

New trackers may be added to the system 500 using a process by which thelink 504 sends its position within the pseudo-random generator over tothe new trackers so that the new tracker can synchronize to the samecount. Going forward, the new tracker will then generate the samepseudo-random number-based keys as the link 504.

The result is low-footprint encrypted and/or authenticated orientationdata packets. As the orientation data packets are already quite small,the low footprint encryption and/or authentication is important so asnot to overburden the orientation data packets with security measuresthat overwhelm the quantity of data actually transmitted. A similarprocess for encrypting and/or authenticating data packets outbound fromthe link 504 to an external computing device (not shown, see e.g.,external computing device(s) 1099 of FIG. 10 ) is also contemplatedherein.

Information security addresses Confidentiality, Integrity, andAvailability. Most readily available security systems are designed forlarger data packets that generally contemplated herein or for storingdata securely at rest. These algorithms are typically resource heavy andcomputationally expensive. Even technologies such as Bluetooth LowEnergy that use AES-CCM as their default security require dedicatedencryption/decryption hardware to run efficiently on systems withlimited resources. Additionally, AES-CCM requires a minimum of 5-bytepayload and an additional 4-bytes of data per packet for security,making it unusable in real-time applications with small payloads as theencryption overhead will be larger than the payload itself. As such,much of the prior art focuses on securing data at rest or securinglarger packets. In fact, many real-time systems forgo any form ofsecurity due to a general belief that it is not possible to do itadequately in real-time.

The presently disclosed technology includes a symmetric key algorithmusing stream ciphers following the concepts of a one-time pad (OTP). Theresulting ciphertext is secure as long as:

-   -   1. The key is at least as long as the plaintext;    -   2. The key must be random;    -   3. The key must never be reused; and    -   4. The key must be kept secret.        Using these concepts as building blocks yields the presently        disclosed algorithm.

A keysize of 64 bits (8 bytes) is chosen to match the payload of 64bits. For a key to never be reused, a Counter Based Pseudo Random NumberGenerator (CBPRNG) can be used to generate a new 64-bit key everyiteration. This type of number generator has no internal state and twoseparate CBPRNGs, which will produce the same result if they are giventhe same counter number if they use the same secret key. If they usedifferent secret keys, then the resulting 64-bit key will not match.Since a CBPRNG is not truly random, it must be chosen carefully byensuring it passes statistical tests for randomness, entropy, anduniformity. Additionally, this generator must be able to supply randomnumbers for at least as long as the life of the system 500 so as not torepeat. The secret key is programmed into each tracker-link pair at thefactory and never shared again. This means that a specific tracker willonly work with a specific link, such as link 504. Adding trackers orreplacing trackers requires that the link 504 know the tracker's secretkey. This secret key exchange can occur via a secure connection betweenthe link 504 and a computing device.

The system 500 solves confidentiality issues by using the randomlygenerated key in various ways. The data can be XOR'd directly with thekey. This will ensure that the data appears random to a passerby.However, even though the data may appear random, the passerby knows thatcertain data is being communicated. An attacker can intercept the packetand replace bits with their own data to guess the packet format. Withthis, they can determine which bits contain the orientation data orwhich bits contain the battery level since they can see that theirchanges are having an effect on those parts of the decrypted data. Toprevent this, circular shifts can be used to increase confusion anddiffusion such that the key moves the bits around. If an attacker triesthe same technique, they now do not know which bits contain which databecause the results will be random.

Integrity concerns itself with preventing the data from being tamperedwith as in the previous example. Integrity is achieved by using acryptographic hash one-way function that produces the same result whenfed the same data but a wildly different result when fed a slightlydifferent data set. Usually, this is done with Message AuthenticatedCode (MAC). There are generally three ways to do this, but the quickestfor small packets is the MAC-then-Encrypt (MtE). The payload is runthrough a hash function and a MAC is produced. The MAC is appended tothe payload and then the key is used to XOR and bitshift the data toproduce an encrypted packet. When the packet is transmitted, thereceiver will first decrypt the packet using the same key and then runthe resulting decrypted payload through the same hash function andcompare the MAC. If they match then the data is safe to use, otherwise,the data has been tampered with and can be ignored. Quick hash functionssuch as the 32-bit versions of siphash or highwayhash can be used. Theresult can be XOR'd together and reduced to 8 bits to optimize packetsize.

Availability concerns itself with preventing denial of service attackswhich prevent legitimate users from using the system 500. For example,an attacker may send thousands of data packets per second resulting inthe system 500 not receiving the actual real data, similar to a jammer.This problem may be unavoidable as the problem occurs at a physicallevel. Even if the system 500 changes frequencies randomly, the attackermay flood all the frequencies with the attack. The system 500 also hasno way of detecting where the packet comes from without first decryptingthe packet so the system 500 must spend the time to decrypt each packetbefore ignoring it. This is a problem with all wireless systems as thephysical signal itself can be jammed which is equivalent to cutting thesignal wire in a wired system.

Each of the trackers 502, 528, 530, 532, 534, 536 have a differentsecret key. That secret key is shared with the link 504. Initially, atracker sends an unencrypted packet with no information and the link 504replies with the current counter in an unencrypted confirmation packet.The link 504 must keep track of the counter to prevent reusing a counteror purposefully advancing the counter. The counter can be saved inpersistent memory and can skip samples every time it reboots to preventintentionally manipulating the counter value from draining the batteryor glitching. Additionally, each of the trackers 502, 528, 530, 532,534, 536 keeps track of its counter in the same way as an attacker canpretend to be either the link 504 or a tracker. If one of the trackers502, 528, 530, 532, 534, 536 receives a link counter value that is lowerthan the current tracker counter value, that tracker will ignore thecounter value and send another unencrypted zero data packet. The link504 will advance the counter by a few thousand and try again. The link504 will keep advancing the counter value until it is more than thetracker's current counter. While this can be done to intentionallyforward the link counter, with 264 possible values before an overflow,the process could take multiple lifetimes.

Once a tracker receives a valid counter value from the link 504, thetracker will run the CBPRNG and generate a 64-bit key. That key is usedto run the hash function on the payload to generate an 8-bit MAC. The56-bit payload and 8-bit MAC are then scrambled with the key to form theencrypted packet. The 64-bit encrypted packet is sent to the link 504.The link 504 receives the packet and runs the same CBPRNG using the samecounter number and the same secret key as the tracker to generate thesame 64-bit key. That key unscrambles the 64-bit encrypted packet andruns the 56-bit payload through the hash function. If the hash functionproduces the same 8-bit MAC that is present in the packet, then the datais safe to use. If the hashes do not match, then the data is ignored. Inthe next sample, the link counter and tracker counter are advancedregardless of whether the data was valid or not. If the hash is invalidafter a set number of samples, the link 504 will revert to sending thecounter number and the process starts over. In this way, communicationbetween the link 504 and the tracker is secure. Even if an attackermanages to find the key to one of the trackers, it will only be validfor that one tracker.

FIG. 6 illustrates a cascading communication system (e.g., a full-bodymotion capture system) 600 according to the presently disclosedtechnology with cascading communications between a linking device (orlink) 604 and its connected sensing devices (or trackers) 602, 628.While the sensing devices 602, 628 are generally discussed herein asrepresenting measurement devices worn on a user's body to capturemovements of the user's body, other implementations may include anysensor packages (or sensor(s), buffer, and microcontroller) capable ofdetecting information and queuing that information as data stored in abuffer for timed outbound transmission. Similarly, while the linkingdevice 604 is generally discussed herein to receive and consolidateorientation data received from a set of trackers, the linking device 604could merely receive data from the sensing devices 602, 628 anddistinguish the received data based on its timing, with or withoutconsolidating the received data.

The sensing devices 602, 628 and linking device 604 are each equippedwith a low-frequency clock and a high-frequency clock (collectivelyclocks 650, 652, 658). The high-frequency clock is more accurate thanthe low-frequency clock but consumes more power. However, thehigh-frequency clock can calibrate the low-frequency clock periodicallyto maintain accuracy very similar to the high-frequency clock with lessoverall power consumption. Additionally, independent self-calibration ofthe low-frequency clocks synchronizes the tracker low-frequency clockfor each of the sensing devices 602, 628 with the low-frequency clockfor the linking device 604 to within a few nanoseconds without requiringthe same clock source. The sensing devices 602, 628 use thelow-frequency clock to wake up from sleep and perform functions such asreading the sensor data, performing sensor fusion, and sending datapackets. These functions have a fixed code execution time.

Whenever the linking device 604 receives a data packet from one of thesensing devices 602, 628, it will compare the receive time against itsown clock 658 and calculate the difference from the expected time.Assuming the packet arrives early or late, the linking device 604 sendsthe correction to the sensing device through a confirmation packet oracknowledgement (ack.). The sensing device receives the confirmationpacket and adjusts its sleep time so that when it next wakes up, thelinking device 604 will receive the packet closer to its expected time.

This process works due to the fixed code execution time. If the code hasa variable execution time, the data processing can occur before going tosleep and the wakeup can be reserved for sending the packet since wakingup and sending has a fixed execution time. The tracker does not attemptto resend packets if acknowledgements are not received but instead timesout and simply goes to sleep. This is sufficient for body tracking databecause data can be reasonably interpolated up to 6 missed samples. Forapplications that require higher data integrity, the sensing devices602, 628 can keep track of the number of missed packets and offset thetime since each missed packet uses a fixed amount of time. Although analgorithm is designed for systems with the frequency of the connecteddevices being the same, it is possible to modify the algorithm to handledevices with differing frequencies.

The sensing devices 602, 628 are each equipped with one or more sensors(e.g., IMUS) 638, 640, buffers 642, 644, and microcontrollers 646, 648,respectively. The microcontrollers 646, 648 are each further equippedwith clocks 650, 652 and communication links 654, 656, each with receiveand transmit capability utilising a custom short-range communicationprotocol operating over a specific frequency (e.g., the 2.4 GHz ISMband). The communication links 654, 656 communicate informationcollected by the sensor(s) 638, 640, and queued by the buffers 642, 644,respectively, to the linking device 604. The linking device 604 isequipped with its own clock 658 and communication link 660 that servesto receive, and in some implementations consolidate, the data receivedfrom the sensing devices 602, 628.

The sensing devices 602, 628 can space their signals to be received bythe linking device 604 in time, space, or frequency. For example, thesensing devices 602, 628 may operate at frequencies spaced across the2.4 GHz band, or across multiple frequency bands, to reduce on-airinterference. For further example, the sensing devices 602, 628 mayoperate with predetermined time slots (e.g., an assigned point in timeor timing window), each unique to one of the sensing devices 602, 628.Data packets outbound from the sensing devices 602, 628 may be cascadedin timing so that the linking device 604 receives the data packets insequence. The linking device 604 can identify the source of each of thedata packets based on when the data packet is received.

The linking device 604 is further capable of providing feedback to thesensing devices 602, 628 in the form of acknowledgement or confirmationpackets sent in response to receipt of each of the data packets. Theacknowledgement packets acknowledge receipt of each of the data packetsand provide an instruction to modify timing of the next data packetoutbound from each of the sensing devices 602, 628 to more closely matchthe predetermined time slot assigned to the sensing device. In thismanner, the linking device 604 provides a continuous timing feedbackloop that ensures the sensing devices 602, 628 continue to send datapackets at their assigned predetermined time slots. Since the sensingdevices 602, 628 have a fixed execution time and the low-frequencyclocks are synchronized, the linking device 604 only needs to know whattime the packet was received as the time difference from expected toactual receipt will be the exact offset needed on the sensing devices602, 628 to ensure the next tracker packet will be closer to theexpected receipt time.

The following specific example is provided for clarity. Clocks 650, 652,658 operate on a cyclical cycle (e.g., 1000 Hz or 1 ms). Sensing device602 is assigned time slot A (e.g., 0.4 milliseconds, 0.4 ms, 1.4 ms, 2.4ms, and so on) referenced against a clock signal from clock 650. Asample of the buffered data (Packet A) is pulled from the buffer 642 andsent out via the communication link 654 at 0.4 ms. Upon receipt of thePacket A, the linking device 604 sends Acknowledgement A back to thesensing device 602 via the communication link 660 to confirm receipt ofPacket A.

Receipt timing of the Packet A by the linking device 604 will be closeenough to the assigned time slot A to identify the data packet asoriginating from the sensing device 602, but some error will beintroduced by transit time, differences in operation of clocks 650, 652,658, etc. Embedded within the Acknowledgement A is an instruction tomodify timing of the next data packet to be sent outbound from thesensing device 602 to more closely match the time slot assigned to thesensing device 602 referenced against a clock signal from clock 658.This instruction is intended to correct any difference between theassigned time slot A and the actual received time for Packet A at thelinking device 604.

Sensing device 628 is assigned time slot B (e.g., 0.8 milliseconds, 0.8ms, 1.8 ms, 2.8 ms, and so on) referenced against a clock signal fromclock 652. A sample of the buffered data (Packet B) is pulled from thebuffer 644 and sent out via the communication link 656 at 0.8 ms. Uponreceipt of the Packet B, the linking device 604 sends Acknowledgement Bback to the sensing device 628 via the communication link 660 to confirmreceipt of Packet B.

Receipt timing of the Packet B by the linking device 604 will also beclose enough to the assigned time slot B to identify the data packet asoriginating from the sensing device 628, but some error will also beintroduced by transit time, differences in operation of clocks 650, 652,658, etc. Embedded within the Acknowledgement B is an instruction tomodify timing of the next data packet to be sent outbound from thesensing device 628 to more closely match the time slot assigned to thesensing device 628. This instruction is intended to correct anydifference between the assigned time slot B and the actual received timefor Packet B at the linking device 604.

Another sample of the buffered data (Packet C) is pulled from the buffer642 and sent out via the communication link 654 by default at 1.4 ms.However, Acknowledgement A is used to modify the send time slot forPacket C to more closely mirror the assigned time slot for receipt ofPacket C. For example, Acknowledgement A may include an instruction todelay the next packet by 200. As a result, Packet C is sent 20 μsearlier than 1.4 ms, as viewed by sensing device 602 and its clock 650.Upon receipt of the Packet C, the linking device 604 sendsAcknowledgement C back to the sensing device 602 via the communicationlink 660 to confirm receipt of Packet C.

Receipt timing of the Packet C by the linking device 604 will be closeenough to the assigned time slot C to identify the data packet asoriginating from the sensing device 602, and likely closer to theassigned time slot C due to the delay instruction, but some error willlikely remain. Embedded within the Acknowledgement C is anotherinstruction to modify timing of the next data packet to be sent outboundfrom the sensing device 602 to more closely match the time slot assignedto the sensing device 602. This instruction is intended to correct anydifference between the assigned time slot C and the actual received timefor Packet C at the linking device 604.

Another sample of the buffered data (Packet D) is pulled from the buffer644 and sent out via the communication link 656 by default at 1.8 ms.However, Acknowledgement B is used to modify the send time slot forPacket D to more closely mirror the assigned time slot for receipt ofPacket D. For example, Acknowledgement B may include an instruction toadvance the next packet by 200. As a result, Packet D is sent 20 μslater than 1.8 ms, as viewed by sensing device 628 and its clock 652.Upon receipt of the Packet D, the linking device 604 sendsAcknowledgement D back to the sensing device 628 via the communicationlink 660 to confirm receipt of Packet D.

Receipt timing of the Packet D by the linking device 604 will be closeenough to the assigned time slot D to identify the data packet asoriginating from the sensing device 628, and likely closer to theassigned time slot D due to the advance instruction, but some error willlikely remain. Embedded within the Acknowledgement D is anotherinstruction to modify timing of the next data packet to be sent outboundfrom the sensing device 628 to more closely match the time slot assignedto the sensing device 628. This instruction is intended to correct anydifference between the assigned time slot D and the actual received timefor Packet D at the linking device 604.

For simplicity in explanation, the specific example provided in FIG. 6and described above only provides two sensing devices 602, 628 and fourtotal data Packets A-D, two from each of the sensing devices 602, 628.In practice, this example may be extended to as many devices as desiredwithin bandwidth limitations. Further, this example may be extended to acontinuous sequence of numerous cascading data packets from the sensingdevices 602, 628 (and perhaps additional sensing devices) to provide acontinuous positive feedback loop to maintain timing of incoming datapackets to the linking device 604 within the predetermined time slots.In some implementations, approximately three sequential cascading datapackets from each of the sensing devices are sufficient to achieve ahigh level of accuracy in meeting the predetermined time slots. Theprovided close frequency and assigned time slots are also merelyexamples that may be increased or decreased in frequency depending onthe demands of the linking device 604 and potential uses of theunderlying information within the data packets.

Additionally, the data needed to transmit device orientation can beminimized to only a few bytes (e.g., less than 16 bytes or 8 bytes),which can be transmitted in under 1 msec, or even under 300 μs. The datapackets (both containing the information from the sensing devices 602,628 and the acknowledgement packets) may each include an identifierindicating intended destination of the packets. For example, the PacketsA-D may include an identifier of the linking device 604 so that only thelinking device 604 reads Packets A-D. Sensing devices other than thesending device may also receive the Packets A-D, but may ignore thembased on the identifier. Similarly, the Acknowledgements A-D may includean identifier of a specific intended sensing device so that only thatsensing device reads each outbound Acknowledgment. The linking device604 and/or any of the other sensing devices may also receive theoutbound acknowledgments but may ignore them based on the identifier.

While not in active use, the sensing devices 602, 628 can enter alow-power (sleep) mode with the microcontrollers 646, 648 on standbywhile the sensors 638, 640 fill up their respective data buffers 642,644. When the assigned time slot for a sensing device approaches, thesensing device powers up its microcontroller in sufficient time to takea sample of its buffer and send that sample as an outgoing data packetintended for the linking device 604, as discussed in detail below.Following receipt of an acknowledgement from the linking device 604, thesensing device may again enter its low-power (sleep) mode until the nextassigned time slot for the sensing device approaches. This processrepeats iteratively and by maintaining each of the sensing devices in alow-power mode for a majority of the time, the battery life for each ofthe sensing devices is improved.

As discussed above, the sensing devices 602, 628 are synchronized withthe linking device 604 such that the sensing devices 602, 628 are notsending data packets at the same time to reduce interference and enablethe sensing devices 602, 628 to sleep between sends for improved batterylife. Use of a low-power wireless connection and/or wire connectionminimizes the power requirements of the sensing devices 602, 628, whichallows them to be used to continuously sense while the system 600 is inuse and still maintain long battery life. In a purely wiredimplementation, the sensing devices 602, 628 may omit dedicated batterypower and draw power from a central battery located in the linkingdevice 604.

While two sensing devices 602, 628 connected to one linking device 604is illustrated in FIG. 6 as discussed in detail above, otherimplementations may incorporate any number of sensing devices (e.g., 1to 32) connected to a singular linking device, with the only limitingfactor being the bandwidth available to separate the inbound datapackets from each of the sensing devices in time. In someimplementations, signal frequency is used to further separate groupingsof sensing devices. For example, if more sensing devices than availablebandwidth are used with a singular linking device, a first grouping ofthe sensing devices may utilize a first frequency band and a secondgrouping of the sensing devices may utilize a second frequency band,thereby doubling the maximum possible sensing devices that may beconnected to a linking device. For further example, two separatecascading communication systems may be used in close proximity (e.g.,within the same room or building) by operating a first linking deviceand its associated sensing devices over a first frequency band and asecond linking device and its associated sensing devices over a secondfrequency band. Still further, more than two frequency bands may beutilized to further expand the number of linking devices and associatedsensing devices that may be used in close physical proximity to oneanother.

FIG. 7 illustrates example operations 700 for using a full-body motioncapture system according to the presently disclosed technology withcascading communications between a link and its connected trackers.Other implementations may use the disclosed cascading communicationsoperations for systems outside of full-body motion capture. A generatingoperation 705 generates and stores orientation data of a tracker in abuffer within the tracker. The tracker is a measurement device worn on auser's body to capture movements of the user's body. The tracker may bestrategically placed and spaced apart from other trackers on the user'sbody to capture relative motions of different portions of the user'sbody. The tracker is equipped with a variety of sensors, collectivelyand in combination with a computing device referred to herein as aninertial measurement unit (IMU), to determine orientation and generatethe orientation data.

A pulling operation 710 pulls a sample of the buffered data and placesthe sample into a data packet sent outbound from the tracker at a timeslot assigned to the tracker as referenced against a tracker clocksignal. The tracker includes a microcontroller with a communication linkthat performs the pulling operation 710. The tracker also includes aclock that defines the first tracker clock signal.

A receiving operation 715 receives the data packet from the tracker at alink. The link may be also placed on the user's body and also includes acommunication link with receive and transmit capability. The link servesto receive and consolidate the orientation data received from connectedtrackers, such as the tracker discussed above, via the communicationlinks.

An acknowledgment operation 720 acknowledges receipt of the data packetwith an outbound confirmation packet including an instruction to modifytiming of a next data packet to be sent outbound from the tracker tomore closely match the time slot assigned to the tracker as referencedagainst a link clock signal. A second receiving operation 725 receivesthe outbound confirmation packet from the link at the tracker. Alow-power operation 730 transitions the tracker into a low-power modebetween the second receiving operation 725 and pulling a next sample ofthe buffered data for placement into a next data packet. When the timeslot assigned to the tracker comes back around, a modifying operation735 powers the tracker back up and modifies timing of the next datapacket to be sent outbound from the tracker as instructed by theconfirmation packet.

Operations 700 are substantially repeated for a second tracker that isassigned its own distinct time slot so that the data packets incoming tothe link from the second tracker are distinguishable from the datapackets incoming to the link from the tracker discussed in detail above.The specific example provided in FIG. 7 and described above onlyprovides for one tracker and one data packet. In practice, this examplemay be extended to as many trackers as desired within bandwidthlimitations. Further, this example may be extended to a continuoussequence of numerous cascading data packets from the trackers (andperhaps additional trackers) to provide a continuous positive feedbackloop for each of the trackers to maintain timing of incoming datapackets to the link within the predetermined time slots.

FIG. 8A illustrates an example charging hub 810 with an associatedtracker (or sensing device) 802 and link 804 that each utilizeslow-power near-beam wireless inductive charging from the charging hub810. Broken lines illustrate structures and features that are shown forclarity but would not normally be visible. The charging hub 810 includesan array of six tracker docking stations (e.g., tracker docking station818) that are configured to receive battery-powered sensing devices,such as trackers (e.g., the tracker 802) in a specific chargingorientation. The tracker charging orientation may be described asbackside 870 of the tracker 802 placed adjacent a frontside 872 of thetracker docking station 818, with the tracker 802 centered within thetracker docking station 818 and rotated such that one of its sides(e.g., side 874) aligns with a lower lip 876 of the tracker dockingstation 818 and the tracker 802 seats within a saddle in the charginghub 810 formed by the tracker docking station 818. The charging hub 810further includes a link docking station 820 that is configured toreceive the link 804, also in a specific charging orientation. The linkcharging orientation may be described as backside 878 of the link 804placed adjacent a topside 880 of the link docking station 820, with thelink 804 centered within the link docking station 820 and rotated suchthat its sides (e.g., side 882) align with lips (e.g., lip 884) of thelink docking station 820 and the link 804 seats within a recess in thecharging hub 810 formed by the link docking station 820.

The link 804 and trackers slip fit within the link and tracker dockingstations (with or without rubber pieces), respectively, to removablysecure the link 804 and trackers in place on the charging hub 810 in thedesired orientation. In other implementations, the trackers includereceivers (not shown) on each side that removably receive matching clips(also not shown) on the charging hub 810 to secure the trackers in placeon the charging hub 810 in the desired orientation. Still furtherimplementations may include magnets within the link and tracker dockingstations that are paired with magnets within the link and trackersthemselves, respectively, to removably secure the link 804 and trackersin place on the charging hub 810 in the desired orientation.

The charging hub 810 utilizes low-power near-beam wireless inductivecharging to charge the trackers and the link 804 when properly seatedwithin their respective docking stations on the charging hub 810. Eachof the trackers includes a tracker inductive coil oriented inside of andadjacent to a planar exterior surface of the tracker (e.g., trackerinductive coil 886 inside a planar exterior surface, such as backside870 of tracker 802). Each of the tracker docking stations includes amatching station inductive coil oriented inside of and adjacent to aplanar exterior surface of the docking station (e.g., station inductivecoil 890 inside a planar exterior surface, such as frontside 872 oftracker docking station 818). Similarly, the link 804 includes a linkinductive coil 888 oriented inside of and adjacent to a planar exteriorsurface (e.g., backside 878) of the link 804. A matching stationinductive coil 892 is oriented inside of and adjacent to a planarexterior surface (e.g., topside 880) of the link docking station 820.

The low-power near-beam wireless inductive charging can be achieved withfewer components than the prior art. Typical wireless charging systemsinclude specialized circuits and have a high component count, whichlimits their use to larger devices. Additionally, prior art solutionsinclude a wireless power channel and a separate wireless communicationchannel that increases cost and takes up PCB space. Although a wirelesscommunication channel is often required for safety when transferringmultiple watts of power through a single coil, the presently discloseddesign consumes no more than 250 mW of power per coil. This power is lowenough to allow for most materials to dissipate generated thermal energyat ambient temperature.

Additionally, the charging hub 810 forms a negative feedback loop inwhich foreign objects placed on the charging hub 810 will alter theimpedance of an LC circuit such that less power is transferredautomatically. For example, when no devices are charging, each coilconsumes 20 mW of power due to the change in impedance resulting fromthe reduced load. The short range of less than 3 or 5 mm also ensuresthat unintentional radiation does not get absorbed by stray objects. Thetransmitter operates through a fixed clock source oscillating at acouple hundred KHz that is tuned to minimize the coil impedance. Theclock is sent through a buffer that isolates the impedance of thevarious devices charging so that each operates independently of theothers. A transistor takes the buffered signal and quickly switches onand off the high-side LC circuit such that a magnetic field is inducedwithin the coil (L). Whenever a properly impedance-matched coil isbrought within 4 or 5 mm of the transmitter coil, the impedance of thecharging hub 810 changes to a value that maximizes the magnetic fieldgeneration and thus increases wireless power transfer efficiency.

Charging multiple devices utilizes a single clock source. The number ofcharging devices is increased by increasing the number of buffers,transistors, and LC circuits to match the number of devices. Thetheoretical limit is based on the amount of power that the charging hub810 can provide. There are two methods of isolation that can make thismethod work in multidevice configurations where other methods may fail.First, the clock signal is isolated electrically with a buffer so thatthe multiple devices do not influence each other. Second, the magneticfield is isolated physically using the specific orientation of thecharger coil locations and the ferrite sheets that redirect the magneticfield. If the charger were a simple grid of devices or if there were noferrite sheets behind each coil, the transmitter coil magnetic fieldswould interact with each other, and power would flow from thetransmitter coil to the neighboring transmitter coil instead of from thetransmitter coil to the receiver coil as intended, which negativelyaffects charging. This occurs because the induced magnetic field's shapeis a closed curve that stretches from one pole to the next. If the coilsare next to each other on the same plane, then the magnetic field willtravel between adjacent coils as that is the shortest path of the poles.Likewise, if the coils do not have a ferrite sheet but the shape of thecharger as disclosed is maintained, the field lines will connect insidethe charger itself as that is the shortest path between poles. To haveadequate separation of the magnetic field, the coils are physicallyseparated and shielded from each other, which is achieved by ferritesheets. Angling the coils with respect to each other enables closercoils than distancing linearly on the same plane.

The link 804/trackers receiver circuitry includes a full-bridgerectifier to convert supplied AC voltage to DC voltage and a constantcurrent regulator (CCR). The full-bridge rectifier can be made withtransistors if higher efficiency than diodes is required. The circuitcan monitor the battery voltage and turn off the CCR whenever the link804/tracker battery is nearing capacity. This changes the receiver LCcircuit impedance by altering the load, which reduces power to the link804/tracker being charged, resulting in minimal heating and power loss.The controllable CCR enables state-of-the-art charging techniques suchas pulsed current charging, which has been shown to maximize the batterylife over conventional charging methods such as constant current andconstant-voltage (CC-CV) charging. The circuit may produce an overallefficiency of over 70%, even when charging multiple devices.

FIG. 8B illustrates an example low-power near-beam wireless inductivecharging circuit 800. In a typical simple inductive charging circuitaccording to the prior art, Series LC circuits are used because they canoutput more power and are more efficient than their equivalent ParallelLC circuits. However, the increased power comes at the cost of a smalleroperating range when the load or impedance is altered, which is whychargers of this type use a feedback loop to tune the frequency andamplitude to find the optimal power transfer point.

In a typical flexible inductive charging circuit according to the priorart, issues with the simple series LC circuit are resolved by adding afeedback loop to find optimal charging parameters under varying loads.The custom transmitter and custom receiver are responsible for bothpower transfer and communication using the same coil. Typically, thecommunication and power transfer occur at different frequencies so thatthe system can differentiate between them. These designs can alter thefrequency, amplitude, and load of the circuit to find the optimalcharging point. The power at the receiver is measured and sent back tothe transmitter. The transmitter then calculates the efficiency andadjusts the frequency and amplitude to give the most efficient charging.This system can compensate for various coil materials, coil shapes, coilspacing, and varying loads. However, this system is unable to work inmultidevice configurations because of the need to find the optimal powertransfer point per device. A multidevice configuration may requiremultiple custom TX ICs so that each one can monitor each deviceindependently.

The low-power near-beam wireless inductive charging circuit 800 uses aparallel LC circuit, which has a lower peak power transfer rating but ahigher resilience under changing loads and impedances than prior artsolutions. This means that even if the inductor values, capacitorvalues, or load is slightly different, the power transfer is notaffected and is still near peak performance. In other words, using aparallel LC circuit eliminates the need for the secondary communicationchannel that optimizes the narrow optimal point present in a series LCcircuit.

Near beam inductive charging keeps the frequency and amplitude of theclock source the same. Magnetically coupled parallel LC tank circuits805, 815 form a 4^(th)-order expression with multiple optimal pointsdepending on the frequency and the coupling factor (k-factor) of the twocoils (L1, L2). The k-factor is the efficiency of the two coils (L1, L2)and will be 1.0 when the power transfer is lossless. In prior artsolutions, the power is calculated at the receiver and then sent back tothe charger. The charger can then calculate the power loss and adjustaccordingly. This provides maximum power transfer even across multiplecharging frequencies. Since the circuit 800 lacks a secondarycommunication channel, there is no way to communicate the power at thereceiver or calculate efficiency on the fly. Instead, optimal powertransfer is achieved by impedance matching the receiver LC circuit 815with the transmitter LC circuit 805. When circuits 805, 815 areimpedance matched, the resistive losses are minimized for thatfrequency. This does not necessarily mean the power transfer ismaximized at that frequency, but because a Parallel LC Circuit is used,the resulting power transfer will be near peak efficiency. Additionally,by using a Parallel LC Circuit, the point of minimal loss is large evenunder changing loads which means varying receiver coil sizes andreceiver LC circuits can be used on the same transmitter. Assuming aknown coil inductance and a known frequency, the capacitors can bechosen to find this point of minimal resistive loss by the followingequations:

C_TX=1/(L_TX*(1.29*2*PI*F){circumflex over ( )}2); and

C_RX=1/(L_RX*(2*PI*F){circumflex over ( )}2), wherein

C=Capacitor of Capacitor in LC Circuit in Farads;

L=Inductance of Coil in LC Circuit in Henries; and

F=Clock frequency.

A value 1.29 is used on the transmitter side to account for transistorzero-voltage-switching (ZVS), which is the point at which the transistorswitching losses will be minimized. The coil inductance and shape canalso change while maintaining this equation as it only gives the valuesthat minimize resistive losses. Power transfer losses are governed bythe k-factor which mostly concerns the coil coupling. Frequency can beset to minimize component cost. A lower frequency means a largercapacitor which equates to larger resistive losses. Generally, lowerfrequencies increase the power transfer rate but result in larger losseswhile higher frequencies decrease the power transfer rate but result inhigher efficiency.

Approximately 200 kilohertz (KHz) is a good range for achieving abalance of efficiency and adequate power transfer. An additionaladvantage of tuning based on impedance matching is that the frequencywill stay the same, but the induced magnetic field will change dependingon the load. In this way, the circuit 800 automatically minimizes losseswhen loaded and when unloaded. Although the Near Beam Charging circuit800 does not maximize total power efficiency, it does minimize powerloss, which in low-power applications may be sufficient.

When the trackers are placed in the specific charging orientation withina tracker docking station, a tracker inductive coil faces a stationinductive coil (e.g., tracker inductive coil 886 of tracker 802 facesstation inductive coil 890 within the docking station 818) therebymaking a matched pair of inductive coils. Similarly, when the link 804is placed in the specific charging orientation within the link dockingstation 820, the link inductive coil 888 faces the station inductivecoil 892 thereby making a matched pair of inductive coils. In thecharging orientation, a matched pair of inductive coils are coplanar andcentered over one another, and they are in close proximity (e.g., 3 mmto 5 mm or less than 6 mm) apart from one another.

The matched pairs of tracker inductive coils are generally capable oftransferring approximately 30 milliamps of power at 5 volts, at anapproximately 70% conversion rate. Power transfer can generally beincreased by increasing the diameter of the coils without significantloss in efficiency. For example, the link 804 coil may be capable oftransferring approximately 85 mA of power at 5V by increasing the coildiameter from 12 mm to 20 mm. The power transfer capability is directlyrelated to the area of the coil. These numbers represent maximum powertransfer and fall within a standard 500 mA 5 V USB port. Additionally,charging power can be reduced on the receiver side by simply loweringthe duty cycle at which the CCR is active. This is useful in situationswhere one may want to equalize the charge on the set of link804/trackers by adjusting the rate of charge per device or when thecharger is operating from a power-constrained supply.

In various implementations, the tracker inductive coils may utilizeconstant current, pulsed current, constant voltage, pulsed voltage, orsome combination thereof, that may or may not be matched to theimpedance and other characteristics of the batteries to be charged(e.g., battery 896). In some implementations, one of the matched pairsof inductive coils (e.g., inductive coils 888, 892) is larger than othermatched pairs of inductive coils (e.g., inductive coils 886, 890). Theenlarged coils may allow for a faster rate of power transfer from thecharging hub 810 to the link 804 as compared to the trackers. This maybe due to the battery capacity and power demands of the link 804exceeding that of the trackers. For example, the inductive coils 888,892 may be 20% larger in area than the inductive coils 886, 890 andenable 20% greater power transfer than the inductive coils 886, 890.Mismatched coil sizes can also be used in situations where perfect coilalignment cannot be guaranteed as the mismatch will transfer more powerover a larger area.

The station inductive coils (e.g., inductive coils 890, 892) may be keptin an always-on state so long as the charging hub 810 is powered (e.g.,via its own battery or an external power supply). This avoids additionalcomplexity and cost of providing a separate channel to control on/offstates of the station inductive coils, as provided by much of the priorart. Due to a relatively small power transfer rate and close proximityof match pairs of inductive coils, such as that noted above, poweringthe station inductive coils even when the matching tracker/link 804inductive coils are off or not present, is not hazardous (e.g., the lowpower does not create a shock risk or fire hazard). The tracker/link 804inductive coils (e.g., inductive coils 886, 888) are switched off bytheir respective tracker/link 804 when a respective battery (e.g.,battery 896) is indicated as fully charged so that the batteries in thetrackers and link 804 are not overcharged. In other implementations, thestation inductive coils are switched on/off as well over separatechannels.

Each of the inductive coils within the charging hub 810, the trackers,and the link 804 are shielded on a backside of the inductive coil facingan interior of the charging hub 810, the trackers, and the link 804,respectively. The shields (e.g., shield 894) are generally planar and atleast cover a footprint of the inductive coils, and perhaps more, asshown in FIG. 8A. The shields may take the form of metallic or ferritesheets that are specifically intended to block a majority of themagnetic field emanating from the inductive coils from penetrating theshields into the charging hub 810, the trackers, and the link 804. Theshields also serve to amplify the magnetic field emanating from a frontside of the inductive coils and focus an otherwise hemisphericalspherical magnetic field toward a center of the inductive coils and awayfrom the charging hub 810, the trackers, and the link 804. The dockingstations may also be shielded from one another to prevent unwantedmagnetic interference from adjacent docking stations and ensure that thedocking stations provide sufficient and equal charging rates to thetrackers and the link 804. In other implementations, the charging hub810 at its docking stations utilizes metal contacts that pair with metalcontacts on the trackers and the link 804 for a traditional chargingscheme.

As illustrated, the docking stations on the charging hub 810 arearranged in a multi-faceted arrangement where the docking stations arenot oriented in a singular plane like many prior art wireless chargingpucks and pads. This orientation physically separates a charging coil'smagnetic field from adjacent charging coils' magnetic fields to enablemultidevice charging in a compact space. While the charging hub 810 isdepicted with six docking stations for trackers and a singular dockingstation 820 for the link 804, as few as two docking stations and as manydocking stations for trackers and/or links as desired may be used inother implementations. Further, while the charging hub 810 has aspecific number of charging stations, not all of the charging stationsmay be in use at one time to charge connected trackers and/or links.Still further, the charging hub 810 may also double as a storage caddyfor the trackers and/or the link 804 when not in use. Further still, thecharging hub 810 may be physically connected to a power source when inuse, or the charging hub 810 may have its own battery power supply thatis rechargeable so that the charging hub 810 may charge the trackersand/or the link 804 even when not physically connected to a powersource, if sufficient charging hub 810 battery power is available.

The disclosed low-power near-beam wireless inductive charging isadvantageous over prior art solutions that use electrical contacts inthat it is waterproof, requires only one cable for powering (or chargingthe charging hub 810, if it is battery powered), no separate power bankis required, no USB or other connections are required on the trackersand/or the link 804, and the charging hub 810/trackers/the link 804 areeasy to transport and use.

The disclosed low-power near-beam wireless inductive charging isadvantageous over prior art wireless inductive solutions in that theprior art solutions are intended to transfer high power and provide moreflexibility in aligning the matched pair of inductive coils. The presenttechnology is lower power, in part enabled by the specific chargingorientations disclosed herein, that allow for even smaller coils. Thelower power and small coils as compared to the prior art further enablethe station inductive coils to be kept in an always-on state so long asthe charging hub 810 is powered. This avoids an additional complexityand cost of providing a separate channel to control on/off states of thestation inductive coils, as provided by much of the prior art.

FIG. 9 illustrates example operations 900 for using a low-powernear-beam wireless charging hub. While the low-power near-beam wirelesscharging hub is explicitly described to charge an array of trackers anda link for a full-body motion capture system, the low-power near-beamwireless charging hub may be used to charge a variety of battery-poweredsensing devices. A powering operation 910 powers a charging hub via anexternal power supply or an internal battery. The charging hub includesdocking stations and station inductive coils oriented inside of andadjacent planar exterior surfaces of the docking station. The dockingstations are in a multi-faceted arrangement about an exterior of thecharging hub and are shielded from one another.

A first seating operation 920 seats a first battery-powered sensingdevice (e.g., a tracker) in a first docking station of the charging hubin a first predetermined charging orientation. The first battery-poweredsensing device includes a first device inductive coil oriented inside ofand adjacent to a planar exterior surface of the first battery-poweredsensing device. One of the station inductive coils faces the firstdevice inductive coil in the first predetermined charging orientation.

A second seating operation 930 seats a second battery-powered sensingdevice (e.g., a link) in a second docking station of the charging hub ina second predetermined charging orientation. The second battery-poweredsensing device includes a second device inductive coil oriented insideof and adjacent to a planar exterior surface of the secondbattery-powered sensing device. Another of the station inductive coilsfaces the second device inductive coil in the second predeterminedcharging orientation.

A charging operation 940 inductively charges the first and secondbattery-powered sensing devices using matched pairs of inductive coils.A first matched pair is the first device inductive coil and one of thestation inductive coils. A second matched pair is the second deviceinductive coil and another of the station inductive coils.

In some implementations, the station inductive coils are always on whenthe charging hub is powered, and on/off charging control is handled atthe battery-powered sensing device. A first turning-off operation 950turns the first device inductive coil off when the first battery-poweredsensing device is fully charged. A second turning-off operation 960turns the second device's inductive coil off when the secondbattery-powered sensing device is fully charged.

While use of two battery-powered sensing devices within two dockingstations is described specifically above, as many battery-poweredsensing devices and corresponding docking stations within the charginghub as desired may be used as described above in other implementations.Further, not all of the charging stations may be in use at one time tocharge connected battery-powered sensing devices, such as trackersand/or links for a full-body motion capture system.

FIG. 10 illustrates an example system diagram for a computingenvironment 1000 suitable for executing a full-body motion capturesystem according to the presently disclosed technology. Tracker (orsensing device) 1002 includes an IMU 1014 including an accelerometer1016, a magnetometer 1018, and a gyroscope 1020 that in combinationprovide orientation data for the tracker 1002. The orientation dataflows through a bus 1010 (e.g., a printed circuit board) to amicrocontroller that includes at least a processor 1008, system storage1006, a power supply 1028, and a wired/wireless interface 1024. Whileonly one tracker 1002 is illustrated in FIG. 10 and described above, thefull-body motion capture system as described in detail elsewhere hereinmay include two or more trackers, each of which may be configured anddescribed above and shown in FIG. 10 .

Link (or linking device) 1004 receives and consolidates orientation datareceived from a set of trackers, such as tracker 1002, via a wired orwireless communication link 1060 between the wired/wireless interface1024 of the tracker 1002 and a wired/wireless interface 1025 of the link1004. In various implementations, the link 1004 receives data from thetracker 1002 and other connected trackers. With or without consolidatingand/or further processing the received data, the link 1004 transmits thedata over another wired or wireless communication link 1061 withexternal computing device(s) 1099 (e.g., smartphones, tablet computers,laptop computers, desktop computers, servers, and virtual machines).

As such, the wired/wireless interface 1025 of the link 1004 may includethree radios, for example. A first radio establishes the communicationlink 1060 with the tracker 1002. A second radio utilizes Bluetooth toestablish the communication link 1061 with the external computingdevice(s) 1099. A third radio utilizes WiFi to establish thecommunication link 1061 with the external computing device(s) 1099. Agreater or fewer number of radios, including different radios than thatlisted, and including an option for radios that are capable of usingmultiple communication standards, are also contemplated herein.

In general, both the tracker 1002 and the link 1004, buses 1010, 1011interconnect major subsystems such as processors 1008, 1009, systemstorages 1006, 1007 (such as random-access memory (RAM) and read-onlymemory (ROM)), and power supplies 1028, 1029. Wired/wireless interfaces1024, 1025 are used to establish the communication links 1060, 1061,which ultimately allow the link 1004, tracker 1002, and other connectedtrackers to transmit tracker orientation and/or position data to a datastorage network and/or a local or wide area network (such as theInternet), via the external computing device(s) 1099, using any networkinterface system known to those skilled in the art.

Many other devices or subsystems (e.g., servers, personal computers,tablet computers, smartphones, mobile devices, etc.) may be connected ina similar manner to that depicted in FIG. 10 . Also, it is not necessaryfor all of the components depicted in FIG. 10 to be present to practicethe presently disclosed technology. Furthermore, devices and componentsthereof may be interconnected in different ways from that shown in FIG.10 . Code (e.g., computer software, including mobile applications(apps)) to implement the presently disclosed technology may be operablydisposed in the system storage 1006, 1007 as firmware or software.

The tracker 1002 and/or link 1004 may include a variety of tangiblecomputer-readable storage media (e.g., the system storage 1006, 1007)and intangible computer-readable communication signals. Tangiblecomputer-readable storage can be embodied by any available media thatcan be accessed by the tracker 1002 and/or link 1004 and includes bothvolatile and non-volatile storage media, as well as removable andnon-removable storage media implemented in any method or technology forstorage of information such as computer-readable instructions, datastructures, program modules, and/or other data. Tangiblecomputer-readable storage media includes but is not limited to,firmware, RAM, ROM, electrically erasable programmable read-only memory(EEPROM), flash memory or other memory technology, optical disc storage,magnetic cassettes, magnetic tape, magnetic disc storage or othermagnetic storage devices, or any other tangible medium which can be usedto store the desired information, and which can be accessed by thetracker 1002 and/or link 1004.

Intangible computer-readable communication signals may embodycomputer-readable instructions, data structures, program modules, orother data resident in a modulated data signal, such as a carrier waveor other signal transport mechanism. The term “modulated data signal”means a signal that has one or more of its characteristics set orchanged in such a manner as to encode information in the signal. By wayof example, and not limitation, intangible communication signals includesignals traveling through wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, radiofrequency (RF), infrared (IR), and other wireless media.Computer-readable storage media as defined herein specifically excludesintangible computer-readable communications signals.

Some implementations may comprise an article of manufacture which maycomprise a tangible storage medium to store logic. Examples of a storagemedium may include one or more types of computer-readable storage mediacapable of storing electronic data, including volatile memory ornon-volatile memory, removable or non-removable memory, erasable ornon-erasable memory, writeable or re-writeable memory, and so forth.Examples of the logic may include various software elements, such assoftware components, programs, applications, computer programs,application programs, system programs, machine programs, operatingsystem software, middleware, firmware, software modules, routines,subroutines, operation segments, methods, procedures, softwareinterfaces, application program interfaces (APIs), instruction sets,computing code, computer code, code segments, computer code segments,words, values, symbols, or any combination thereof. In oneimplementation, for example, an article of manufacture may storeexecutable computer program instructions that, when executed by acomputer, cause the computer to perform methods and/or operations inaccordance with the described implementations. The executable computerprogram instructions may include any suitable type of code, such assource code, compiled code, interpreted code, executable code, staticcode, dynamic code, and the like. The executable computer programinstructions may be implemented according to a predefined computerlanguage, manner, or syntax, for instructing a computer to perform acertain operation segment. The instructions may be implemented using anysuitable high-level, low-level, object-oriented, visual, compiled,and/or interpreted programming language.

The presently disclosed technology may be implemented as logical stepsin one or more computer systems (e.g., as a sequence ofprocessor-implemented steps executing in one or more computer systemsand as interconnected machine or circuit modules within one or morecomputer systems). The implementation is a matter of choice, dependenton the performance requirements of the computer system implementing thepresently disclosed technology. Accordingly, the logical operationsmaking up implementations of the presently disclosed technology arereferred to variously as operations, steps, objects, or modules.Furthermore, the logical operations may be performed in any order,adding or omitting operations as desired, unless explicitly claimedotherwise or a specific order is inherently necessitated by the claimlanguage.

The above specification, examples, and data provide a completedescription of the structure and use of exemplary implementations of thepresently disclosed technology. Since many implementations of thepresently disclosed technology can be made without departing from thespirit and scope of the invention, the presently disclosed technologyresides in the claims hereinafter appended. Furthermore, structuralfeatures of the different implementations may be combined in yet anotherimplementation without departing from the recited claims.

What is claimed is:
 1. A body motion capture system comprising: five ormore trackers to be placed on disparate points of a user's body, each ofthe trackers including: an accelerometer; a magnetometer; a gyroscope;and a microcontroller, each of the microcontrollers outputting a signaldefining its tracker orientation based on a sensor fusion of outputsfrom its accelerometer, magnetometer, and gyroscope; and a link toreceive the signals from the microcontrollers and consolidate thesignals into a singular tracker orientation signal; and a computingdevice to receive the tracker orientation signal and interpolate thetracker orientation signal using anatomical constraints to create adigital representation of the user's body movement.
 2. The body motioncapture system of claim 1, the accelerometers each referencegravitational force.
 3. The body motion capture system of claim 1, themagnetometers each reference magnetic north.
 4. The body motion capturesystem of claim 1, the gyroscopes each to selectively estimateorientation in place of the accelerometers and magnetometers.
 5. Thebody motion capture system of claim 1, each pairing of accelerometer andmagnetometer in each tracker to correct for gyroscope drift.
 6. The bodymotion capture system of claim 1, wherein magnetic interference at atracker is corrected by finding parameters that fit a dot product of thetracker's acceleration vector and the tracker's magnetic field vector toa local magnetic inclination.
 7. The body motion capture system of claim1, wherein a position of each of the trackers is inferred using reverseforward kinematics (RFK).
 8. The body motion capture system of claim 1,wherein hard limits based on the anatomical constraints are used tocorrect errors or drift in the signals from the microcontrollers.
 9. Thebody motion capture system of claim 1, wherein one of the trackersserves as a known position for inferring a position of each of the othertrackers therefrom.
 10. A method of providing body motion capturecomprising: tracking orientation of five or more trackers to be placedon disparate points of a user's body, each of the trackers including anaccelerometer, a magnetometer, a gyroscope, and a microcontroller;generating signals from each of the microcontrollers outputting a signaldefining its tracker orientation based on a sensor fusion of outputsfrom its accelerometer, magnetometer, and gyroscope; receiving thesignals from the microcontrollers and consolidating the signals into asingular tracker orientation signal; and receiving the trackerorientation signal at a computing device and interpolating the trackerorientation signal using anatomical constraints to create a digitalrepresentation of the user's body movement.
 11. The method of claim 10,further comprising: performing a calibration sequence prior to thegenerating operation.
 12. The method of claim 10, further comprising:pulling absolute position data from one device; and referencing relativepositions of each of the trackers against the pulled absolute position.13. A kinematic chain motion capture system comprising: two or moretrackers to be placed on disparate points of an object approximated by akinematic chain, each of the trackers including: an accelerometer; amagnetometer; a gyroscope; and a microcontroller, each of themicrocontrollers outputting a signal defining its tracker orientationbased on a sensor fusion of outputs from its accelerometer,magnetometer, and gyroscope; and a link to receive the signals from themicrocontrollers and consolidate the signals into a singular trackerorientation signal; and a computing device to receive the trackerorientation signal and interpolate the tracker orientation signal usinganatomical constraints to create a digital representation of theobject's movement.
 14. The kinematic chain motion capture system ofclaim 13, wherein the object is a human body holding an inanimateobject.
 15. The kinematic chain motion capture system of claim 13,wherein the object is a non-human body.
 16. The kinematic chain motioncapture system of claim 13, the accelerometers each to determineorientation about two axes for their respective trackers.
 17. Thekinematic chain motion capture system of claim 13, the magnetometerseach to determine orientation about a third axis for their respectivetrackers.
 18. The kinematic chain motion capture system of claim 13, thegyroscopes each to selectively estimate orientation in place of theaccelerometers and magnetometers.
 19. The kinematic chain motion capturesystem of claim 13, each pairing of accelerometer and magnetometer ineach tracker to correct for gyroscope drift.
 20. The kinematic chainmotion capture system of claim 13, wherein magnetic interference at atracker is corrected by finding parameters that fit a dot product of thetracker's acceleration vector and the tracker's magnetic field vector toa local magnetic inclination.